﻿using Vestras.StarCraft2.Luna.Parser;
using Vestras.StarCraft2.Luna.Parser.Ast;

namespace Vestras.StarCraft2.Luna.Validation {
    public static class GalaxyNativeElementsSimulator {
        private static Struct CreateNativeStruct(string name) {
            Struct s = new Struct();
            s.Name = name;
            return s;
        }

        private static void InitializeNativeTypes() {
            NamedEntityRegistre.Add("abilcmd", CreateNativeStruct("abilcmd"));
            NamedEntityRegistre.Add("actor", CreateNativeStruct("actor"));
            NamedEntityRegistre.Add("actorscope", CreateNativeStruct("actorscope"));
            NamedEntityRegistre.Add("aifilter", CreateNativeStruct("aifilter"));
            NamedEntityRegistre.Add("bank", CreateNativeStruct("bank"));
            NamedEntityRegistre.Add("bool", CreateNativeStruct("bool"));
            NamedEntityRegistre.Add("byte", CreateNativeStruct("byte"));
            NamedEntityRegistre.Add("camerainfo", CreateNativeStruct("camerainfo"));
            NamedEntityRegistre.Add("char", CreateNativeStruct("char"));
            NamedEntityRegistre.Add("color", CreateNativeStruct("color"));
            NamedEntityRegistre.Add("doodad", CreateNativeStruct("doodad"));
            NamedEntityRegistre.Add("fixed", CreateNativeStruct("fixed"));
            NamedEntityRegistre.Add("int", CreateNativeStruct("int"));
            NamedEntityRegistre.Add("marker", CreateNativeStruct("marker"));
            NamedEntityRegistre.Add("order", CreateNativeStruct("order"));
            NamedEntityRegistre.Add("playergroup", CreateNativeStruct("playergroup"));
            NamedEntityRegistre.Add("point", CreateNativeStruct("point"));
            NamedEntityRegistre.Add("region", CreateNativeStruct("region"));
            NamedEntityRegistre.Add("revealer", CreateNativeStruct("revealer"));
            NamedEntityRegistre.Add("sound", CreateNativeStruct("sound"));
            NamedEntityRegistre.Add("soundlink", CreateNativeStruct("soundlink"));
            NamedEntityRegistre.Add("string", CreateNativeStruct("string"));
            NamedEntityRegistre.Add("text", CreateNativeStruct("text"));
            NamedEntityRegistre.Add("timer", CreateNativeStruct("timer"));
            NamedEntityRegistre.Add("transmissionsource", CreateNativeStruct("transmissionsource"));
            NamedEntityRegistre.Add("trigger", CreateNativeStruct("trigger"));
            NamedEntityRegistre.Add("unit", CreateNativeStruct("unit"));
            NamedEntityRegistre.Add("unitfilter", CreateNativeStruct("unitfilter"));
            NamedEntityRegistre.Add("unitgroup", CreateNativeStruct("unitgroup"));
            NamedEntityRegistre.Add("unitref", CreateNativeStruct("unitref"));
            NamedEntityRegistre.Add("void", CreateNativeStruct("void"));
            NamedEntityRegistre.Add("wave", CreateNativeStruct("wave"));
            NamedEntityRegistre.Add("waveinfo", CreateNativeStruct("waveinfo"));
            NamedEntityRegistre.Add("wavetarget", CreateNativeStruct("wavetarget"));
        }

        public static void Initialize() {
            InitializeNativeTypes();
        }
    }
}
